import request from '@/utils/request';
import { AxiosPromise } from 'axios';

/**
 * 查询产品管理列表
 * @param query
 * @returns {*}
 */

export const listProduct = (query?: ProductVO): AxiosPromise<ProductVO[]> => {
  return request({
    url: '/wms/product/list',
    method: 'get',
    params: query
  });
};

/**
 * 查询产品管理详细
 * @param id
 */
export const getProduct = (id: string | number): AxiosPromise<ProductVO> => {
  return request({
    url: '/wms/product/' + id,
    method: 'get'
  });
};

/**
 * 新增产品管理
 * @param data
 */
export const addProduct = (data: ProductVO) => {
  return request({
    url: '/wms/product',
    method: 'post',
    data: data
  });
};

/**
 * 修改产品管理
 * @param data
 */
export const updateProduct = (data: ProductVO) => {
  return request({
    url: '/wms/product',
    method: 'put',
    data: data
  });
};

/**
 * 删除产品管理
 * @param id
 */
export const delProduct = (id: string|number | Array<number|string>) => {
  return request({
    url: '/wms/product/' + id,
    method: 'delete'
  });
};

/**
 * 查询产品图片列表
 * @param id
 * @returns {*}
 */

export const listProductOss = (id?: string|number): any => {
  return request({
    url: '/wms/product/oss/list/' + id,
    method: 'get',
  });
};


export interface ProductVO extends BaseEntity, PageQuery {
  /**
   * 产品子id
   */
  id?: string | number;

  /**
   * 产品编码
   */
  sku?: string;

  /**
   * 产品名称
   */
  name?: string;

  /**
   * 产品规格
   */
  specification?: string;

  /**
   * 包装单位
   */
  packingUnit?: string;

  /**
   * 计量单位
   */
  measureUnit?: string;

  /**
   * 包装数量
   */
  packingQuantity?: string;

  /**
   * 销售价格
   */
  price?: number;

  /**
   * 采购价格
   */
  purchasePrice?: number;

  /**
   * 类别
   */
  treeValue?: string;

  /**
   * 产品属性
   */
  attrValue?: string;

  /**
   * 产品状态
   */
  status?: string;

  /**
   * 是否库存
   */
  isStock?: boolean;

  /**
   * 可否销售
   */
  isSales?: boolean;

  /**
   * 可否采购
   */
  isPurchase?: boolean;

  /**
   * 可否生产
   */
  isProduce?: boolean;

  /**
   * 是否物料
   */
  isMaterial?: boolean;

  /**
   * 委外加工
   */
  isOutsource?: boolean;

  /**
   * 最低库存
   */
  minStock?: number;

  /**
   * 最大库存
   */
  maxStock?: number;

  /**
   * 备注
   */
  remark?: string;

  /**
   * 图片
   */
  productOss?: ProductOssVO[];

  //商城属性

  /**
   * 产品归属商城菜单id
   */
  mallMenuId?: number;

  /**
   * 描述
   */
  desc?: string;

  /**
   * 旧价格
   */
  oldPrice?: number;
}

export interface ProductOssVO extends BaseEntity {
  /**
   * 产品id
   */
  productId?: string | number;

  /**
   * 产品图id
   */
  ossId?: string | number;

  /**
   * 排序
   */
  sort?: string | number;

  /**
   * 图片类型
   */
  type?: string | number;

}
